#pragma once

#include "Muzzy A Wrappers\DirectX.h"
#include <vector>


class Shaders
{
public:
	enum ShaderType { ST_DEFAULT,ST_FLASHLIGHT,ST_COUNT };
	
private:
	Shader				m_pActiveShader;
	std::vector<Shader>	m_Shaders;

	char *				m_hMVP;
	char *				m_hTexture;
	char *				m_hTexCoord;
	char *				m_hColorMask;

public:
	static Shaders* getInstance();

	void Initialize();
	void Shutdown();

	//////////////////////////////////////////////////////////////////////
	// Accessors and Mutators
	Shader		getActiveShader()					{ return m_pActiveShader; }
	const char*	getMVPHandle()						{ return m_hMVP; }
	const char*	getTextureHandle()					{ return m_hTexture; }
	const char*	getTexCoordHandle()					{ return m_hTexCoord; }
	const char* getColorMaskHandle() const			{ return m_hColorMask; }
	void		setActiveShader(ShaderType eShader)	{ m_pActiveShader = m_Shaders[eShader]; }
	//////////////////////////////////////////////////////////////////////

private:
	Shaders(void);
	Shaders(const Shaders&);
	virtual ~Shaders(void);
	Shaders& operator =(const Shaders&);
};

